package manager;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GestionHistorial {
	private Historial historial;
	private db conexion = null;
	
	static final int CAMBIO_UBICACION = 1;
	static final int CAMBIO_ESTADO = 2;
	static final int INGRESO = 3;
	static final int BAJA = 4;
	static final int ROBO = 5;
	static final int OTRO = 99;
	
	public Historial getHistorial() {
		return historial;
	}
	public void setHistorial(Historial historial) {
		this.historial = historial;
	}
	public db getConexion() {
		return conexion;
	}
	public void setConexion(db conexion) {
		this.conexion = conexion;
	}
	public GestionHistorial(db conexion) {
		super();
		this.conexion = conexion;
	}
	public GestionHistorial(db conexion,Historial historial) {
		super();
		this.conexion = conexion;
		this.historial = historial;
	}
	
	public boolean Add() throws SQLException {
		boolean result = false;
		String sql = "insert into historial (equipo,usuario,motivo,observacion,fecha) values(?,?,?,?,sysdate())";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, this.historial.getEquipo());
		pst.setString(2, this.historial.getUsuario());
		pst.setInt(3, this.historial.getMotivo());
		pst.setString(4, this.historial.getObservacion());
		
		if (conexion.Update(pst) > 0){
			result = true;
			
		}
		return result;
	}
	public boolean Add(Historial historial) throws SQLException {
		boolean result = false;
		String sql = "insert into historial (equipo,usuario,motivo,observacion,fecha) values(?,?,?,?,sysdate())";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, historial.getEquipo());
		pst.setString(2, historial.getUsuario());
		pst.setInt(3, historial.getMotivo());
		pst.setString(4, historial.getObservacion());
		
		if (conexion.Update(pst) > 0){
			result = true;
			
		}
		return result;
	}
	
	public List<Historial> listado(String equipo) throws SQLException {
		List<Historial> lista = new ArrayList<Historial>();
		String sql ="select equipo,usuario,motivo,observacion,fecha from historial where equipo = ?";
		java.sql.PreparedStatement pst = conexion.getConnection().prepareStatement(sql);
		pst.setString(1, equipo);
		ResultSet rs = conexion.Query(pst);
		if (rs.next()) {
			do {
				Historial h = new Historial();
				h.setEquipo(rs.getString("equipo"));
				h.setUsuario(rs.getString("usuario"));
				h.setMotivo(rs.getInt("motivo"));
				h.setObservacion(rs.getString("observacion"));
				h.setFecha(rs.getString("fecha"));
				lista.add(h);
				
			}while(rs.next());
			
		}
		
		return lista;
		
	}
	
	
	public static String getDescripcionMotivo(int motivo) {
		switch(motivo) {
		case 1:
			return "CAMBIO UBICACION";
		case 2:
			return "CAMBIO ESTADO";
		case 3:
			return "INGRESO";
		case 4:
			return "BAJA";
		case 5:
			return "ROBO";
		case 99:
			return "OTRO";
		default:
			return "DESCONOCIDO";
		}
	}

}
